~~function() {
	var List = function(eOptions) {
		var AJAXURL = PRESERVE.contextPath + 'ajax/portlet';
		// if (typeof (con) === 'string') {
		// contain = jQuery('#' + con);
		// } else if (typeof (con) === 'object') {
		// contain = jQuery(con);
		// } else {
		// contain = con;
		// }
		var self = this;
		var options = {
			url : AJAXURL,
			// key : ''
			dataSource : {
				pageNo : 0,
				rowSize : 10,
				p_bean : ''
			}
		};
		jQuery.extend(options, eOptions);
		// 初始化
		this.init = function() {
			var listSource = [ {
				key : options.key,
				data : [ {
				// name : 'test'
				} ]
			} ];
			window.ko_list = new PRESERVE.tmpl(listSource);
			ko.applyBindings(ko_list);
			self.pageBind();
			window.ko_page = ko.applyBindings(ko_page);
			self.ajax();
		};

		// 分页数据绑定
		this.pageBind = function() {
			function Page() {
				this.pagingList = ko.observableArray();
				this.hasPrePage = false;
				this.hasNextPage = false;
				this.hasNextPageList = false;
				this.pageNo = 1;
				this.rowSize = 10;
			}
			window.ko_page = new Page();
			ko.applyBindings(ko_page);
		};

		// 分页渲染
		this.pageRender = function(data) {
			// 更新列表数据
			ko_page.pagingList.removeAll();
			for ( var d in data.pagingList) {
				ko_page.pagingList.push(data[d]);
			}
			// 更新其他数据
			this.hasPrePage = data.hasPrePage;
			this.hasNextPage = data.hasNextPage;
			this.hasNextPageList = data.hasNextPageList;
			this.pageNo = data.pageNo;
		};

		// 异步请求数据
		this.ajax = function() {
			jQuery.ajax({
				url : options.url,
				type : 'POST',
				dataType : 'json',
				data : options.dataSource,
				success : function(data, textStatus, xhr) {
					self.render(data);
				},
				error : function(xhr, textStatus, errorThrown) {
					alert(errorThrown);
				}
			});
		};

		// 渲染模板
		this.render = function(data) {
			var list = [], page = {};// 待解析
			ko_list.updateOptions(options.key, list);
			self.pageRender(page);
		};
		self.init();
	};
	PRESERVE.list = List;

}();